package com.atguigu.polymophism;

public class TestAnimal3 {
    public static void main(String[] args) {
        Dog d1 = new Dog();
        look(d1);//方法调用时，形参(Animal a)是 Animal类型，实参d1是Dog类型。实参是给形参赋值的
                //Animal a = d1;

        Cat c1 = new Cat();
        look(c1);

        Pig p1 = new Pig();
        look(p1);

        Bird b1 = new Bird();
        look(b1);
    }

    //定义一个方法，可以看各种动物吃东西
    //3个重载方法，这种实现方法，如果新增子类，需要新增方法。如果要删除某个子类，也要删除对应的方法。
    /*public static void look(Dog d){
        d.eat();
    }
    public static void look(Cat c){
        c.eat();
    }
    public static void look(Pig p){
        p.eat();
    }*/
    public static void look(Animal a){
        a.eat();
    }
}
